package log

import "context"

type ILogger interface {
	DebugWithContext(ctx context.Context, a ...interface{})
	DebugfWithContext(ctx context.Context, format string, a ...interface{})
	InfoWithContext(ctx context.Context, a ...interface{})
	InfofWithContext(ctx context.Context, format string, a ...interface{})
	WarnWithContext(ctx context.Context, a ...interface{})
	WarnfWithContext(ctx context.Context, format string, a ...interface{})
	ErrorWithContext(ctx context.Context, a ...interface{})
	ErrorfWithContext(ctx context.Context, format string, a ...interface{})
	PanicWithContext(ctx context.Context, a ...interface{})
	PanicfWithContext(ctx context.Context, format string, a ...interface{})
	FatalWithContext(ctx context.Context, a ...interface{})
	FatalfWithContext(ctx context.Context, format string, a ...interface{})
	DebugWithTraceID(traceID string, a ...interface{})
	DebugfWithTraceID(traceID string, format string, a ...interface{})
	InfoWithTraceID(traceID string, a ...interface{})
	InfofWithTraceID(traceID string, format string, a ...interface{})
	WarnWithTraceID(traceID string, a ...interface{})
	WarnfWithTraceID(traceID string, format string, a ...interface{})
	ErrorWithTraceID(traceID string, a ...interface{})
	ErrorfWithTraceID(traceID string, format string, a ...interface{})
	PanicWithTraceID(traceID string, a ...interface{})
	PanicfWithTraceID(traceID string, format string, a ...interface{})
	FatalWithTraceID(traceID string, a ...interface{})
	FatalfWithTraceID(traceID string, format string, a ...interface{})
	Debug(a ...interface{})
	Debugf(format string, a ...interface{})
	Info(a ...interface{})
	Infof(format string, a ...interface{})
	Warn(a ...interface{})
	Warnf(format string, a ...interface{})
	Error(a ...interface{})
	Errorf(format string, a ...interface{})
	Panic(a ...interface{})
	Panicf(format string, a ...interface{})
	Fatal(a ...interface{})
	Fatalf(format string, a ...interface{})
	Filter(filter string)
}
